package com.example.zzh.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

/**
 * 功能描述
 *
 * @author: ZhangZhenHao
 * @date: 2023年12月29日 10:52
 */
public class TimeUtils {
    //当日时间段 str:开始时间/结束时间 i:前i天
    public static String dayTime(String str,int i){
        // 获取当前时间
        LocalDateTime currentDateTime = LocalDateTime.now().minusDays(i);
        // 格式化时间为指定格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        if(str.equals("start")){
            // 将时间设置为当天的0时0分0秒
            LocalDateTime startOfDay = currentDateTime.withHour(0).withMinute(0).withSecond(0).withNano(0);
            return startOfDay.format(formatter);
        }else if(str.equals("end")){
            // 将时间设置为当天的23时59分59秒
            LocalDateTime endOfDay = currentDateTime.withHour(23).withMinute(59).withSecond(59).withNano(0);
            return endOfDay.format(formatter);
        }
        return null;
    }

    //当月时间段 str:开始时间/结束时间 i:前i天
    public static String monthTime(String str,int i){
        // 转换成指定格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        if(str.equals("start")){
            // 获取这个月的月初时间
            LocalDate firstDayOfThisMonth = LocalDate.now().minusMonths(i).withDayOfMonth(1);
            System.out.println("start"+firstDayOfThisMonth.atStartOfDay().format(formatter));
            return firstDayOfThisMonth.atStartOfDay().format(formatter);
        }else if(str.equals("end")){
            // 获取这个月的月末时间
            LocalDate lastDayOfThisMonth = LocalDate.now().minusMonths(i).withDayOfMonth(1);
            System.out.println("end"+lastDayOfThisMonth.plusMonths(1).minusDays(1).atTime(23, 59, 59).format(formatter));
            return lastDayOfThisMonth.plusMonths(1).minusDays(1).atTime(23, 59, 59).format(formatter);
        }
        return null;
    }

    // 创建近7天日期列表
    public static List<String> weekList(){
        List<String> weekList = new ArrayList<>();
        for(int i=6;i>=0;i--){
            // 获取当前时间
            LocalDateTime currentDateTime = LocalDateTime.now().minusDays(i);
            // 格式化时间为指定格式
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            weekList.add(currentDateTime.format(formatter));
        }
        // 转换成指定格式的字符串
      return weekList;
    }

    // 创建近7月日期列表
    public static List<String> monthList(){
        List<String> monthList = new ArrayList<>();
        for(int i=6;i>=0;i--){
            // 获取当前时间
            LocalDate Month = LocalDate.now().minusMonths(i).withDayOfMonth(1);
            // 格式化时间为指定格式
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
            monthList.add(Month.format(formatter));
        }
        // 转换成指定格式的字符串
        return monthList;
    }

}
